	m=0
    do i=1,nodeInterface
	do j=1,3
	do l=1,3
		m=m+1
		sendVPoints9(m)=gradU(j,l,nodeBoundaryMeshlabel(i))
	end do
	end do
	end do

!    call MPI_Barrier(MPI_COMM_WORLD,ierr)
!    call MPI_Alltoallv(sendp,sendCountsp,sDisplsp,MPI_DOUBLE_PRECISION &
!        ,recvp,recvCountsp,rDisplsp,MPI_DOUBLE_PRECISION,MPI_COMM_WORLD,ier)
!    call MPI_Alltoallv(sendVPoints9,sendCountsVPoints9,sDisplsVPoints9,MPI_DOUBLE_PRECISION &
!        ,recvVPoints9,recvCountsVPoints9,rDisplsVPoints9,MPI_DOUBLE_PRECISION,MPI_COMM_WORLD,ier)
    ier=0
    recvVPoints9=0
    do iProc = 0,nump-1
    IF (sendCountsVPoints9(iProc+1)/=0)THEN
! recvCountsVPoints9=sendCountsVPoints9, sDisplsVPoints9=rDisplsVPoints9
! could replace sDisplsVPoints9 with cumulative total from sendCountsVPoints9??? 
    call MPI_SENDRECV(sendVPoints9(1+sDisplsVPoints9(iProc+1)), sendCountsVPoints9(iProc+1), &
                                                        MPI_DOUBLE_PRECISION, iProc, 0, &
                      recvVPoints9(1+sDisplsVPoints9(iProc+1)), sendCountsVPoints9(iProc+1), &
                                                        MPI_DOUBLE_PRECISION, iProc, 0, &
                                                        MPI_COMM_WORLD,statusp, ier)
    ENDIF
    end do

	m=0
    do i=1,nodeInterface
	do j=1,3
	do l=1,3
		m=m+1
	!	write(*,*) 'rank,m,nodeBoundaryMeshlabel(i)=',rank,m,nodeBoundaryMeshlabel(i)
		gradU(j,l,nodeBoundaryMeshlabel(i))= &
		gradU(j,l,nodeBoundaryMeshlabel(i))+recvVPoints9(m)
    end do
	end do
	end do
